/*
 * 描述： <描述>
 * 修改人： rain
 * 修改时间： 2016年1月29日
 * 项目： rainhy-cores-webcore
 */
package com.rainhy.webcore.support.bean;

import java.util.List;

import org.springframework.data.domain.Page;

import com.rainhy.core.lang.Pagination;

/**
 * 分页支持
 * 
 * @author rain
 * @version [版本号, 2016年1月29日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class PageData<T> {
    
    /** 当前页码 */
    private int currentPage;
    
    /** 页码 */
    private Pagination pagination;
    
    /** 数据 */
    private Page<T> page;
    
    /** 页码基础 url */
    private String paginationBaseUrl;
    
    /**
     * 
     * @param scale 页码标度(以当前页为界左右分割的长度)
     * @param page 数据
     *            
     * @version [版本号, 2016年1月31日]
     * @see [相关类/方法]
     * @since [产品/模块版本]
     * @author rain
     */
    public PageData(int scale, Page<T> page) {
        this.page = page;
        this.currentPage = page.getNumber();
        this.pagination = new Pagination(scale, page.getNumber(), page.getTotalPages());
    }
    
    /**
     * 
     * @param scale 页码标度(以当前页为界左右分割的长度)
     * @param paginationBaseUrl 页码基础 url
     * @param page 数据
     *            
     * @version [版本号, 2016年1月31日]
     * @see [相关类/方法]
     * @since [产品/模块版本]
     * @author rain
     */
    public PageData(int scale, String paginationBaseUrl, Page<T> page) {
        this.page = page;
        this.paginationBaseUrl = paginationBaseUrl;
        this.currentPage = page.getNumber();
        this.pagination = new Pagination(scale, page.getNumber(), page.getTotalPages());
    }
    
    /** 当前页码 */
    public int getCurrentPage() {
        return currentPage;
    }
    
    /** 获取分页数据行 */
    public List<T> getDataRows() {
        if (this.page == null) {
            return null;
        }
        return this.page.getContent();
    }
    
    /** 获取分页数据行数 */
    public int getDataRowSize() {
        if (this.page == null) {
            return 0;
        }
        
        return this.page.getContent().size();
    }
    
    /** 数据 */
    public Page<T> getPage() {
        return page;
    }
    
    /** 页码 */
    public Pagination getPagination() {
        return pagination;
    }
    
    /** 页码基础 url */
    public String getPaginationBaseUrl() {
        return paginationBaseUrl;
    }
    
    /** 当前页码 */
    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }
    
    /** 数据 */
    public void setPage(Page<T> page) {
        this.page = page;
    }
    
    /** 页码 */
    public void setPagination(Pagination pagination) {
        this.pagination = pagination;
    }
    
    /** 页码基础 url */
    public void setPaginationBaseUrl(String paginationBaseUrl) {
        this.paginationBaseUrl = paginationBaseUrl;
    }
    
}
